fixed space char detection bug
authorMatthias Kramm <kramm@quiss.org>
Wed, 31 Mar 2010 23:04:43 +0000 (16:04 -0700)
committerMatthias Kramm <kramm@quiss.org>
Wed, 31 Mar 2010 23:04:43 +0000 (16:04 -0700)
lib/filters/remove_font_transforms.c
lib/pdf/InfoOutputDev.cc

index 4b671f7..cdebf67 100644 (file)
@@ -145,7 +145,10 @@ static transformedfont_t* transformedfont_new(gfxfont_t*orig, mymatrix_t*m)
     f->used = rfx_calloc(sizeof(f->used[0])*orig->num_glyphs);
     int t;
     for(t=0;t<orig->num_glyphs;t++) {
-       if(orig->glyphs[t].unicode==32)
+       if(orig->glyphs[t].unicode==32 && 
+          (!orig->glyphs[t].line || 
+           !orig->glyphs[t].line->next || 
+           !orig->glyphs[t].line->next->next))
            f->used[t]=1; //always preserve the space char in fonts
     }
     return f;
index a977970..83dd43f 100644 (file)
@@ -118,7 +118,15 @@ static int findSpace(gfxfont_t*font)
     for(t=0;t<font->num_glyphs;t++) {
        gfxglyph_t*g = &font->glyphs[t];
        if(GLYPH_IS_SPACE(g)) {
-           if(g->unicode == 32) return t;
+           if(g->unicode == 32) {
+               /* now that we have found a space char, make sure it's unique */
+               int s;
+               for(s=0;s<font->num_glyphs;s++) {
+                   if(s!=t && font->glyphs[s].unicode==32)
+                       font->glyphs[s].unicode=0;
+               }
+               return t;
+           }
        }
     }
     return -1;